let notices = []

//1.注册通知，2.发出通知，3.移除通知
/**
*订阅者注册通知
*@param {String} name 通知名称，建议写在专门的文件中
*@param {Function} receiver 接收通知并执行的函数
*@param (Object) observer 注册对象，指page对象或Component对象
*/

function register(name, receiver, observer){
	if(!observer){
		console.log("warning: 请添加上下文（页面或组件对象),否则无法发送和移除通知");
	}
	let notice = {
		name,
		receiver,
		observer
	}
	notices.push(notice)
	console.log(notices);
}
/**
 * 被观察者发送通知（如detail页改变了阅读次数，需要发送通知）
 * @param {String} name 发送的通知名称
 * @param {Object} info 携带的参数
**/
function post(name, info){
	if(notices.length == 0){
		console.log("error: 目前没有通知对象");
		return
	}
	
	
	for(let i = 0; i < notices.length; i++) {
	    let notice = notices[i];
	    console.log(notices[0]);
	    if(notice.name == name){
	        notice.receiver(info);			
	    }
	}
}
/**
 * 移除通知
 * @param {String} name 已经注册且要移除的通知名称
 * @param {Object} observer 页面/组件对象
****/
function remove(name, observer){
	for(let i =0 ; i < notice.length; i++){
		let notice = notices[i]
		if(notice.name == name){
			if(notice.observer === observer){
			    notices.splice(i, 1);
			    return;
			}
		}
	}
	
}

module.exports = {
	register,
	post,
	remove
}